package fabrica.entities;

import java.io.Serializable;
import java.util.Date;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import fabrica.dto.ItemSolicitudFabricacion;
import fabrica.dto.SolicitudFabricacion;


@Entity
@Table(name ="FABRICASolicitudesFabricacion")
public class SolicitudFabricacionEntity implements Serializable{
	private static final long serialVersionUID = 1L;
	
	@Id	
	private int id;
	
	@Column(name = "idModulo")
	private int idModulo;
	
	@Column(name = "fechaSolicitud")
	@Temporal(TemporalType.DATE)
	private Date fechaSolicitud;
	
	@Column(name = "fechaEntrega")
	@Temporal(TemporalType.DATE)
	private Date fechaEntrega;
	
	@Column(name = "estado")
	private String estado;

	@OneToMany(cascade=CascadeType.ALL, fetch= FetchType.EAGER)	
	@JoinColumn(name = "idSolicitudFab")
	private List<ItemSolicitudFabricacionEntity> articulos;
	
	
	
	//Constructor
	public SolicitudFabricacionEntity() {
		this.articulos = new ArrayList<ItemSolicitudFabricacionEntity>();
	}

	
	//Getters & Setters
	
	public int getId() {
		return id;
	}


	public void setId(int id) {
		this.id = id;
	}


	public int getIdModulo() {
		return idModulo;
	}


	public void setIdModulo(int idModulo) {
		this.idModulo = idModulo;
	}

/*
	public int getIdOrigen() {
		return idOrigen;
	}


	public void setIdOrigen(int idOrigen) {
		this.idOrigen = idOrigen;
	}
*/

	public Date getFechaSolicitud() {
		return fechaSolicitud;
	}


	public void setFechaSolicitud(Date fechaSolicitud) {
		this.fechaSolicitud = fechaSolicitud;
	}


	public Date getFechaEntrega() {
		return fechaEntrega;
	}


	public void setFechaEntrega(Date fechaEntrega) {
		this.fechaEntrega = fechaEntrega;
	}


	public String getEstado() {
		return estado;
	}


	public void setEstado(String estado) {
		this.estado = estado;
	}


	public List<ItemSolicitudFabricacionEntity> getArticulos() {
		return articulos;
	}


	public void setArticulos(List<ItemSolicitudFabricacionEntity> articulos) {
		this.articulos = articulos;
	}
	
	public SolicitudFabricacion toDTO(){
		List<ItemSolicitudFabricacion> items = new ArrayList<ItemSolicitudFabricacion>();
		for(ItemSolicitudFabricacionEntity it : this.getArticulos()){
			items.add(it.toDTO());
		}
		
		SolicitudFabricacion sol = new SolicitudFabricacion(this.getId(), this.getIdModulo(), this.getFechaSolicitud(), this.getFechaEntrega(), this.getEstado(), items);
		
		return sol;
		
	}
	
}
